/*
 * @Author: junsong Chen 779217162@qq.com
 * @Date: 2024-05-14 11:04:47
 * @LastEditTime: 2024-07-12 13:17:04
 * @Description: vite.config.js 配置文件
 */
"use strict";

import { defineConfig, loadEnv } from "vite";
import path from "path";
import legacy from "@vitejs/plugin-legacy";
import vue from "@vitejs/plugin-vue";

const adminName = require("./package.json").name;

// 拼接绝对路径的方法
const resolve = (dir) => {
  return path.join(__dirname, dir);
};

// 打包体积可视化插件
import { visualizer } from "rollup-plugin-visualizer";

export default defineConfig(({ command, mode }) => {
  const envObj = loadEnv(mode, process.cwd());
  const { VITE_APP_API_BASE_URL, VITE_APP_DOMAIN } = envObj;

  return {
    name: adminName,
    base: "/public/elemp-ag3", // 生产环境下的公共路径
    lintOnSave: process.env.NODE_ENV === "development", // nodeJs中自带process模块，我们直接可以通过该变量来判断环境是否关闭语法校验
    resolve: {
      alias: {
        "@": resolve("src"),
        "@components": resolve("src/components"),
        "@assets": resolve("src/assets"),
        "@views": resolve("src/views"),
        "@common": resolve("src/common"),
        "@store": resolve("src/store"),
        "@server": resolve("src/server"),
        "@plugins": resolve("src/plugins"),
        "@api": resolve("src/api"),
      },
    },

    define: {
      // 定义可以通过 process.env 的方式访问环境变量
      "process.env": import.meta.env,
    },

    css: {
      preprocessorOptions: {
        scss: {
          additionalData: `@use "@/assets/styles/element/index.scss" as *;`,
        },
      },
    },

    plugins: [
      vue({
        template: {
          compilerOptions: {
            // 配置运行时编译器的选项
            // 将所有包含短横线的标签作为【自定义元素】处理 任何 'vue-' 开头的元素都会被识别为自定义元素
            isCustomElement: (tag) => tag.startsWith("vue-"),
            // 将这个选项设置为 true 可以强制 Vue 在生产环境下保留注释。而在开发环境下注释是始终被保留的。
            // comments:true
          },
        },
      }),

      visualizer({
        // 生成的分析图文件名，默认stats.html
        file: "stats.html",
        open: true, // 打包后自动打开分析图
      }),

      legacy({
        targets: ["defaults", "not IE 11"],
      }),
    ],

    server: {
      hostname: "0.0.0.0", // 默认是 localhost
      port: 8235, // 默认是 3000 端口
      open: false, // 浏览器自动打开
      https: false, // 是否开启 https
      ssr: false, // 服务端渲染
      inline: true, // 开启热更新
      // outDir: 'dist', // 打包构建输出路径，默认 dist ，若是路径存在，构建以前会被删除
      // 代理
      proxy: {
        [VITE_APP_API_BASE_URL]: {
          target: VITE_APP_DOMAIN,
          changOrigin: true,
          secure: false
        },
      },
    },
  };
});
